/**
 * @author: akiko
 * @description: 此util文件适用于通用的工具类,不具有特定性
 */

/**
 * @description 提取扩展文件名
 * @returns {String}
 */
export function getFileName(str: string): string {
  if (!str.includes('.')) return ''
  return str.slice(((str.lastIndexOf('.') - 1) >>> 0) + 2)
}

/**
 * @description 获取浏览器默认语言
 * @returns {String}
 */
export function getBrowserLang() {
  let browserLang = navigator.language ? navigator.language : navigator.browserLanguage
  let defaultBrowserLang = ''
  if (['cn', 'zh', 'zh-cn'].includes(browserLang.toLowerCase())) {
    defaultBrowserLang = 'zh'
  } else {
    defaultBrowserLang = 'en'
  }
  return defaultBrowserLang
}

/**
 * 将时间间隔格式化为更易读的格式
 *
 * @param date 需要格式化的日期对象，默认为当前时间
 * @returns 返回格式化后的时间间隔字符串
 */
export function timeIntervalFormat(date: Date) {
  let p = false
  let l = [
    {n: '年', s: 3600 * 24 * 365 * 1e3},
    {n: '个月', s: 3600 * 24 * 30 * 1e3},
    {n: '天', s: 3600 * 24 * 1e3},
    {n: '小时', s: 3600 * 1e3},
    {n: '分钟', s: 60 * 1e3},
    {n: '秒', s: 1 * 1e3},
    {n: '刚刚', s: 0}
  ]

  let t = Date.now() - new Date(date || Date.now()).getTime()
  if (Number.isNaN(t)) return ''
  if (t === 0) return l.find(e => e.s === 0)!.n
  if (t < 0) {
    p = !!t
    t = -t
  }
  for (let i = 0; i < l.length; i++) {
    const {n, s} = l[i]
    if (t >= s) {
      const v = Math.floor(t / s)
      return p ? `${v}${n}后` : `${v}${n}前`
    }
  }
}

/**
 * 从给定的 HTML 片段中提取文本内容。
 *
 * @param fragment 包含 HTML 内容的字符串片段。
 * @returns 提取出的文本内容，如果未找到任何文本则返回空字符串。
 */
export const getFragmentContent = (fragment: string) => {
  return new DOMParser().parseFromString(fragment, 'text/html').body.textContent || ''
}
